package com.stardata.liangshisq.tcslmon.service;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.stardata.liangshisq.tcslmon.entity.OrderScheduleVo;
import org.jetbrains.annotations.NotNull;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author Samson Shu
 * @email shush@stardata.top
 * @date 2020/12/13 22:10
 */
@DS("canyin")
public interface OrderScheduleService {
  /**
   * 获取所有预定单的 bsId 列表
   * @return 预定单的 bsId 列表
   */
  @NotNull
  List<Long> getScheduleOrderIds();

  /**
   * 保存订单预定设置
   * @param orderSchedule 订单预定信息
   */
  @Transactional(rollbackFor = {Exception.class})
  void saveOrderSchedule(@NotNull OrderScheduleVo orderSchedule);

  /**
   * 保存订单预定取消
   * @param bsId 订单bsId
   */
  @Transactional(rollbackFor = {Exception.class})
  void cancelOrderSchedule(@NotNull Long bsId);

  /**
   * 预定单自动排队
   */
  @Transactional(rollbackFor = {Exception.class})
  void autoQueueOrderSchedules() ;

  /**
   * 查询订单预定信息
   * @param bsId 订单ID
   * @return 预定信息，如果订单无预定则返回null
   */
  OrderScheduleVo getScheduleInfo(@NotNull Long bsId);
}
